diff --git a/pylint/config/option_manager_mixin.py b/pylint/config/option_manager_mixin.py
index 2f0aac75f..9986a01d6 100644
--- a/pylint/config/option_manager_mixin.py
+++ b/pylint/config/option_manager_mixin.py
@@ -21,6 +21,7 @@ from pylint import utils
 from pylint.config.option import Option
 from pylint.config.option_parser import OptionParser
 from pylint.typing import OptionDict
+from pylint.message.message_id_store import MessageIdStore
 
 if sys.version_info >= (3, 11):
     import tomllib
@@ -307,6 +308,14 @@ class OptionsManagerMixIn:
         option's provider.
         """
         parser = self.cfgfile_parser
+        # Check for disabled messages in the configuration
+        for section in parser.sections():
+            if section == "MESSAGES CONTROL":
+                for option, value in parser.items(section):
+                    if option == "disable":
+                        disabled_ids = utils._splitstrip(value)
+                        message_id_store = MessageIdStore()
+                        message_id_store.update_disabled_msgids(disabled_ids)
         for section in parser.sections():
             for option, value in parser.items(section):
                 try:
diff --git a/pylint/message/message_id_store.py b/pylint/message/message_id_store.py
index 9b89c876f..b303e0fe1 100644
--- a/pylint/message/message_id_store.py
+++ b/pylint/message/message_id_store.py
@@ -18,6 +18,7 @@ class MessageIdStore:
         self.__symbol_to_msgid: dict[str, str] = {}
         self.__old_names: dict[str, list[str]] = {}
         self.__active_msgids: dict[str, list[str]] = {}
+        self.__disabled_msgids: set[str] = set()  # New attribute to store disabled message IDs and symbols
 
     def __len__(self) -> int:
         return len(self.__msgid_to_symbol)
@@ -108,6 +109,27 @@ class MessageIdStore:
         )
         raise InvalidMessageError(error_message)
 
+    def is_message_disabled(self, msgid_or_symbol: str) -> bool:
+        """
+        Check if a message ID or symbol is disabled.
+
+        Args:
+            msgid_or_symbol: The message ID or symbol to check.
+
+        Returns:
+            True if the message is disabled, False otherwise.
+        """
+        return msgid_or_symbol in self.__disabled_msgids
+
+    def update_disabled_msgids(self, disabled_ids: list[str]) -> None:
+        """
+        Update the set of disabled message IDs and symbols.
+
+        Args:
+            disabled_ids: A list of message IDs and symbols to disable.
+        """
+        self.__disabled_msgids.update(disabled_ids)
+
     def get_active_msgids(self, msgid_or_symbol: str) -> list[str]:
         """Return msgids but the input can be a symbol.
 
@@ -128,8 +150,14 @@ class MessageIdStore:
             msgid = self.__symbol_to_msgid.get(msgid_or_symbol)
             symbol = msgid_or_symbol
         if not msgid or not symbol:
-            error_msg = f"No such message id or symbol '{msgid_or_symbol}'."
-            raise UnknownMessageError(error_msg)
+            # Check if the message ID or symbol has been disabled
+            if self.is_message_disabled(msgid_or_symbol):
+                # Handle the disabled message ID or symbol
+                # Return an empty list or a special value indicating it's disabled
+                return []
+            else:
+                error_msg = f"No such message id or symbol '{msgid_or_symbol}'."
+                raise UnknownMessageError(error_msg)
         ids = self.__old_names.get(msgid, [msgid])
 
         # Add to cache
